﻿using System;
using SharpSqlAnalyzer.nodes;

namespace SharpSqlAnalyzer.stmt.oracle
{
	// Token: 0x0200013E RID: 318
	public class TPlsqlForallStmt : TCustomSqlStatement
	{
		// Token: 0x170001F2 RID: 498
		// (get) Token: 0x06000A89 RID: 2697 RVA: 0x00305290 File Offset: 0x00303490
		// (set) Token: 0x06000A8A RID: 2698 RVA: 0x00305298 File Offset: 0x00303498
		public virtual TExpression Upper_bound
		{
			get
			{
				return this.upper_bound;
			}
			set
			{
				this.upper_bound = value;
			}
		}

		// Token: 0x170001F3 RID: 499
		// (get) Token: 0x06000A8B RID: 2699 RVA: 0x003052A1 File Offset: 0x003034A1
		// (set) Token: 0x06000A8C RID: 2700 RVA: 0x003052A9 File Offset: 0x003034A9
		public virtual TExpression Lower_bound
		{
			get
			{
				return this.lower_bound;
			}
			set
			{
				this.lower_bound = value;
			}
		}

		// Token: 0x170001F4 RID: 500
		// (get) Token: 0x06000A8D RID: 2701 RVA: 0x003052B2 File Offset: 0x003034B2
		// (set) Token: 0x06000A8E RID: 2702 RVA: 0x003052BA File Offset: 0x003034BA
		public virtual int Bound_clause_kind
		{
			get
			{
				return this.bound_clause_kind;
			}
			set
			{
				this.bound_clause_kind = value;
			}
		}

		// Token: 0x06000A8F RID: 2703 RVA: 0x003052C3 File Offset: 0x003034C3
		public TPlsqlForallStmt() : this(EDbVendor.dbvoracle)
		{
		}

		// Token: 0x06000A90 RID: 2704 RVA: 0x003052CD File Offset: 0x003034CD
		public TPlsqlForallStmt(EDbVendor dbvendor) : base(dbvendor)
		{
			this.sqlstatementtype = ESqlStatementType.sstplsql_forallstmt;
		}

		// Token: 0x06000A91 RID: 2705 RVA: 0x003052E8 File Offset: 0x003034E8
		internal override void buildsql()
		{
		}

		// Token: 0x06000A92 RID: 2706 RVA: 0x003052EA File Offset: 0x003034EA
		internal override void clear()
		{
		}

		// Token: 0x06000A93 RID: 2707 RVA: 0x003052EC File Offset: 0x003034EC
		internal override string getasprettytext()
		{
			return "";
		}

		// Token: 0x06000A94 RID: 2708 RVA: 0x003052F3 File Offset: 0x003034F3
		internal virtual void iterate(TVisitorAbs pvisitor)
		{
		}

		// Token: 0x170001F5 RID: 501
		// (get) Token: 0x06000A95 RID: 2709 RVA: 0x003052F5 File Offset: 0x003034F5
		// (set) Token: 0x06000A96 RID: 2710 RVA: 0x003052FD File Offset: 0x003034FD
		public virtual TCustomSqlStatement Statement
		{
			get
			{
				return this.statement;
			}
			set
			{
				this.statement = value;
			}
		}

		// Token: 0x06000A97 RID: 2711 RVA: 0x00305306 File Offset: 0x00303506
		public override void init(object arg1, object arg2)
		{
			this.indexName = (TObjectName)arg1;
			this.stmtSqlNode = (TStatementSqlNode)arg2;
		}

		// Token: 0x06000A98 RID: 2712 RVA: 0x00305320 File Offset: 0x00303520
		public override int doParseStatement(TCustomSqlStatement psql)
		{
			base.doParseStatement(psql);
			this.stmtSqlNode.doParse(this, ESqlClause.unknown);
			this.statement = this.stmtSqlNode.Stmt;
			return 0;
		}

		// Token: 0x170001F6 RID: 502
		// (get) Token: 0x06000A99 RID: 2713 RVA: 0x00305349 File Offset: 0x00303549
		// (set) Token: 0x06000A9A RID: 2714 RVA: 0x00305351 File Offset: 0x00303551
		public virtual TObjectName IndexName
		{
			get
			{
				return this.indexName;
			}
			set
			{
				this.indexName = value;
			}
		}

		// Token: 0x170001F7 RID: 503
		// (set) Token: 0x06000A9B RID: 2715 RVA: 0x0030535C File Offset: 0x0030355C
		public virtual TDummy BoundsClause
		{
			set
			{
				this.bound_clause_kind = value.int1;
				if (this.bound_clause_kind == 1 || this.bound_clause_kind == 2)
				{
					this.lower_bound = (TExpression)value.node2;
					this.upper_bound = (TExpression)value.node3;
				}
				if (this.bound_clause_kind == 3 || this.bound_clause_kind == 2)
				{
					if (value.node1 is TObjectName)
					{
						this.collectionName = (TObjectName)value.node1;
						return;
					}
					if (value.node1 is TExpression)
					{
						this.collecitonNameExpr = (TExpression)value.node1;
					}
				}
			}
		}

		// Token: 0x170001F8 RID: 504
		// (get) Token: 0x06000A9C RID: 2716 RVA: 0x003053F8 File Offset: 0x003035F8
		// (set) Token: 0x06000A9D RID: 2717 RVA: 0x00305400 File Offset: 0x00303600
		public virtual TObjectName CollectionName
		{
			get
			{
				return this.collectionName;
			}
			set
			{
				this.collectionName = value;
			}
		}

		// Token: 0x170001F9 RID: 505
		// (get) Token: 0x06000A9E RID: 2718 RVA: 0x00305409 File Offset: 0x00303609
		// (set) Token: 0x06000A9F RID: 2719 RVA: 0x00305411 File Offset: 0x00303611
		public virtual TExpression CollecitonNameExpr
		{
			get
			{
				return this.collecitonNameExpr;
			}
			set
			{
				this.collecitonNameExpr = value;
			}
		}

		// Token: 0x06000AA0 RID: 2720 RVA: 0x0030541A File Offset: 0x0030361A
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x06000AA1 RID: 2721 RVA: 0x0030542A File Offset: 0x0030362A
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			this.statement.acceptChildren(v);
			v.postVisit(this);
		}

		// Token: 0x0400128C RID: 4748
		public const int bound_clause_kind_normal = 1;

		// Token: 0x0400128D RID: 4749
		public const int bound_clause_kind_indices_of = 2;

		// Token: 0x0400128E RID: 4750
		public const int bound_clause_kind_values_of = 3;

		// Token: 0x0400128F RID: 4751
		private TExpression lower_bound;

		// Token: 0x04001290 RID: 4752
		private TExpression upper_bound;

		// Token: 0x04001291 RID: 4753
		private int bound_clause_kind = 1;

		// Token: 0x04001292 RID: 4754
		private TStatementSqlNode stmtSqlNode;

		// Token: 0x04001293 RID: 4755
		private TCustomSqlStatement statement;

		// Token: 0x04001294 RID: 4756
		private TObjectName indexName;

		// Token: 0x04001295 RID: 4757
		private TObjectName collectionName;

		// Token: 0x04001296 RID: 4758
		private TExpression collecitonNameExpr;
	}
}
